package com.wicket.okrapp.dal.po.mbg;

import com.baomidou.mybatisplus.annotation.*;
import com.wicket.okrapp.common.annotations.LikeFlag;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;
import javax.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 *
 *
 * @author xxx
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("oms_target_objective_plan_extend")
public class OmsTargetObjectivePlanExtend extends BaseEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 下级是否向下分工 TRUE:是 FALSE:否
   */
  @TableField(value = "low_create_lower_indicator")
  @ApiModelProperty("下级是否向下分工")
  private String lowCreateLowerIndicator;

  /**
   * 下级向下分工责任主体类型 DEPT:部门 PERSONAL:个人 MIXTURE:混合
   */
  @TableField(value = "low_subordinate_div_body_type")
  @ApiModelProperty("下级向下分工责任主体类型")
  private String lowSubordinateDivBodyType;

  /**
   * 指标扩展规划设置ID
   */
  @TableId(value = "objective_planning_extend_id", type = IdType.UUID)
  @NotNull(message = "objectivePlanningExtendId不能为空")
  private String objectivePlanningExtendId;

  /**
   * 量化评分类型 COMPLETION_DEGREE:完成度 EVERY_ADD_AND_SUB:每加减 ACHIEVEMENT_LEVEL:成果等级
   */
  @TableField(value = "quantitative_rating_type")
  @ApiModelProperty("量化评分类型")
  private String quantitativeRatingType;

  /**
   * 归属指标ID
   */
  @TableField(value = "objective_id")
  @NotNull(message = "归属指标ID不能为空")
  @ApiModelProperty("归属指标ID")
  private String objectiveId;

  /**
   * 每加减实际值
   */
  @TableField(value = "actual_value_per_add_or_sub")
  @ApiModelProperty("每加减实际值")
  private Double actualValuePerAddOrSub;

  /**
   * 归属指标标识
   */
  @TableField(value = "objective_code")
  @NotNull(message = "归属指标标识不能为空")
  @ApiModelProperty("归属指标标识")
  @LikeFlag(likeType = "RIGHT_LIKE")
  private String objectiveCode;

  /**
   * 每加减实际值得分
   */
  @TableField(value = "actual_value_score_per_add_or_sub")
  @ApiModelProperty("每加减实际值得分")
  private Double actualValueScorePerAddOrSub;

  /**
   * 本级是否向下分工 TRUE:是 FALSE:否
   */
  @TableField(value = "create_lower_indicator")
  @NotNull(message = "本级是否向下分工不能为空")
  @ApiModelProperty("本级是否向下分工")
  private String createLowerIndicator;

  /**
   * 责任主体类型 PERSONAL:个人 DEPT:部门
   */
  @TableField(value = "resp_body_type")
  @ApiModelProperty("责任主体类型")
  private String respBodyType;

  /**
   * 是否上不封顶 TRUE:是 FALSE:否
   */
  @TableField(value = "is_ceiling_score")
  @ApiModelProperty("是否上不封顶")
  private String isCeilingScore;

  /**
   * 本级向下分工责任主体类型 PERSONAL:个人 DEPT:部门
   */
  @TableField(value = "subordinate_div_body_type")
  @ApiModelProperty("本级向下分工责任主体类型")
  private String subordinateDivBodyType;

  /**
   * 分工末级责任主体设置 FINAL_DEPARTMENT:末级部门 FINAL_PERSON:末级个人
   */
  @TableField(value = "lastt_liable_subject")
  @NotNull(message = "分工末级责任主体设置不能为空")
  @ApiModelProperty("分工末级责任主体设置")
  private String lasttLiableSubject;

  /**
   * 高层分工内容id
   */
  @TableField(value = "division_content_id")
  @ApiModelProperty("高层分工内容id")
  private String divisionContentId;

  /**
   * 高层分工内容类型编码 EQUATIVE_DEPT:同级部门 DEPT_TYPE:部门类型 PRESENT_DEPT:当前部门
   */
  @TableField(value = "division_cont_type")
  @NotNull(message = "分工内容类型编码不能为空")
  @ApiModelProperty("高层分工内容类型编码")
  private String divisionContType;

  /**
   * 高层向下分工层级编码 DEPT_END:部门结束 PUISNE_DEPT_END:下属部门结束 DEPT_PUISNE_STAFF_END:部门下属人员结束 PUISNE_DEPT_STAFF_END:下属部门人员结束
   */
  @TableField(value = "encode")
  @NotNull(message = "向下分工层级编码不能为空")
  @ApiModelProperty("高层向下分工层级编码")
  private String encode;

  /**
   * 高层向下分工部门类型二次设置 SELECTED_DEPARTMENT:水平选择的部门 SUBORDINATE_OF_SEL_DEP:垂直选择下属部门
   */
  @TableField(value = "set_again_type_code")
  @NotNull(message = "向下分工部门类型二次设置不能为空")
  @ApiModelProperty("高层向下分工部门类型二次设置")
  private String setAgainTypeCode;

  /**
   * 高层分工策略描述
   */
  @TableField(value = "division_desc")
  @ApiModelProperty("高层分工策略描述")
  private String divisionDesc;

  /**
   * 数量型指标当无实际值标记 TRUE:是 FALSE:否
   */
  @TableField(value = "quantity_objective_no_value")
  @NotNull(message = "数量型指标当无实际值标记不能为空")
  @ApiModelProperty("数量型指标当无实际值标记")
  private String quantityObjectiveNoValue;

  /**
   * 目标是否向下分工相同 TRUE:是 FALSE:否
   */
  @TableField(value = "target_division_same")
  @NotNull(message = "目标是否向下分工相同不能为空")
  @ApiModelProperty("目标是否向下分工相同")
  private String targetDivisionSame;

  /**
   * 指标汇报对象设置项编码 PRIMARY_TASK:一级建设任务 SECONDARY_TASK:二级建设任务 PRIMARY_OBSERVATION_POINT:二级以下建设任务或一级观测点 SECONDARY_OBSERVATION_POINT:二级观测点 OTHER_OBSERVATION_POINT:二级以下观测点
   */
  @TableField(value = "report_object_set_code")
  @NotNull(message = "指标汇报对象设置项编码不能为空")
  @ApiModelProperty("指标汇报对象设置项编码")
  private String reportObjectSetCode;

  /**
   * 目标周期分工是否相同 TRUE:是 FALSE:否
   */
  @TableField(value = "target_period_division_same")
  @ApiModelProperty("目标周期分工是否相同")
  private String targetPeriodDivisionSame;

  /**
   * 是否开启预算 TRUE:是 FALSE:否
   */
  @TableField(value = "is_use_budget")
  @NotNull(message = "是否开启预算不能为空")
  @ApiModelProperty("是否开启预算")
  private String isUseBudget;

  /**
   * 批次标识
   */
  @TableField(value = "batch_code")
  @ApiModelProperty("批次标识")
  private String batchCode;

  /**
   * 冗余评价模板ID
   */
  @TableField(value = "evaluation_template_id")
  @NotNull(message = "冗余评价模板ID不能为空")
  @ApiModelProperty("冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 创建于批次标识
   */
  @TableField(value = "create_batch_code")
  @ApiModelProperty("创建于批次标识")
  private String createBatchCode;

  /**
   * 批次开始时间
   */
  @TableField(value = "batch_start_time")
  @ApiModelProperty("批次开始时间")
  private Date batchStartTime;

  /**
   * 是否开启预算末级个人汇报 TRUE:是 FALSE:否
   */
  @TableField(value = "is_open_budget_manual_report")
  @NotNull(message = "是否开启预算末级个人汇报不能为空")
  @ApiModelProperty("是否开启预算末级个人汇报")
  private String isOpenBudgetManualReport;

  /**
   * 批次结束时间
   */
  @TableField(value = "batch_endt_time")
  @NotNull(message = "批次结束时间不能为空")
  @ApiModelProperty("批次结束时间")
  private Date batchEndtTime;

  /**
   * 是否开启自定义汇报 TRUE:是 FALSE:否
   */
  @TableField(value = "is_open_custom_report")
  @NotNull(message = "是否开启自定义汇报不能为空")
  @ApiModelProperty("是否开启自定义汇报")
  private String isOpenCustomReport;

  /**
   * 批次下是否更新 TRUE:是 FALSE:否
   */
  @TableField(value = "is_update")
  @NotNull(message = "批次下是否更新不能为空")
  @ApiModelProperty("批次下是否更新")
  private String isUpdate;

  /**
   * 是否开启自定义执行周期 TRUE:是 FALSE:否
   */
  @TableField(value = "is_open_custom_execute_cycle")
  @ApiModelProperty("是否开启自定义执行周期")
  private String isOpenCustomExecuteCycle;

  /**
   * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
   */
  @TableField(value = "update_status")
  @NotNull(message = "批次下更新状态不能为空")
  @ApiModelProperty("批次下更新状态")
  private String updateStatus;

  /**
   * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
   */
  @TableField(value = "archivng_type")
  @NotNull(message = "存档类型不能为空")
  @ApiModelProperty("存档类型")
  private String archivngType;

  /**
   * 是否未来 TRUE:是 FALSE:否
   */
  @TableField(value = "is_editing")
  @NotNull(message = "是否未来不能为空")
  @ApiModelProperty("是否未来")
  private String isEditing;

  /**
   * 是否存档 TRUE:是 FALSE:否
   */
  @TableField(value = "is_archive")
  @NotNull(message = "是否存档不能为空")
  @ApiModelProperty("是否存档")
  private String isArchive;

  /**
   * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
   */
  @TableField(value = "subject_life_cycle")
  @NotNull(message = "主体生命周期不能为空")
  @ApiModelProperty("主体生命周期")
  private String subjectLifeCycle;

  /**
   * 操作人就职记录ID
   */
  @TableField(value = "operation_induction_id")
  @NotNull(message = "操作人就职记录ID不能为空")
  @ApiModelProperty("操作人就职记录ID")
  private String operationInductionId;

  /**
   * 创建人就职记录ID
   */
  @TableField(value = "create_induction_id")
  @NotNull(message = "创建人就职记录ID 不能为空")
  @ApiModelProperty("创建人就职记录ID ")
  private String createInductionId;

  /**
   * 发布人就职记录ID
   */
  @TableField(value = "release_induction_id")
  @ApiModelProperty("发布人就职记录ID")
  private String releaseInductionId;

  /**
   * OKR目标属性 OBJECTIVES:目标O KEY_RESULTS:关键成果KR
   */
  @TableField(value = "indicator_kind")
  @ApiModelProperty("OKR目标属性")
  private String indicatorKind;

  /**
   * 存档人就职记录ID
   */
  @TableField(value = "archive_induction_id")
  @ApiModelProperty("存档人就职记录ID")
  private String archiveInductionId;

  /**
   * 是否自定义OKR目标 TRUE:是 FALSE:否
   */
  @TableField(value = "is_custom_objective")
  @ApiModelProperty("是否自定义OKR目标")
  private String isCustomObjective;

  /**
   * 操作时间
   */
  @TableField(value = "operate_time")
  @NotNull(message = "操作时间不能为空")
  @ApiModelProperty("操作时间")
  private Date operateTime;

  /**
   * 是否启用标杆 TRUE:是 FALSE:否
   */
  @TableField(value = "is_use_benchmark")
  @ApiModelProperty("是否启用标杆")
  private String isUseBenchmark;

  /**
   * 创建时间
   */
  @TableField(value = "create_time")
  @NotNull(message = "创建时间不能为空")
  @ApiModelProperty("创建时间")
  private Date createTime;

  /**
   * 是否过程重点关注 TRUE:是 FALSE:否
   */
  @TableField(value = "is_process_focus")
  @ApiModelProperty("是否过程重点关注")
  private String isProcessFocus;

  /**
   * 发布时间
   */
  @TableField(value = "release_time")
  @NotNull(message = "发布时间不能为空")
  @ApiModelProperty("发布时间")
  private Date releaseTime;

  /**
   * 是否开启成果对接 TRUE:是 FALSE:否
   */
  @TableField(value = "is_symbolic_achievements")
  @ApiModelProperty("是否开启成果对接")
  private String isSymbolicAchievements;

  /**
   * 存档时间
   */
  @TableField(value = "archive_time")
  @NotNull(message = "存档时间不能为空")
  @ApiModelProperty("存档时间")
  private Date archiveTime;

  /**
   * 是否作废 TRUE:是 FALSE:否
   */
  @TableField(value = "is_valid")
  @NotNull(message = "是否作废不能为空")
  @ApiModelProperty("是否作废")
  private String isValid;

  /**
   * 创建于空间ID
   */
  @TableField(value = "space_id")
  @NotNull(message = "创建于空间ID不能为空")
  @ApiModelProperty("创建于空间ID")
  private String spaceId;

  /**
   * 创建于联盟应用ID
   */
  @TableField(value = "app_id")
  @NotNull(message = "创建于联盟应用ID不能为空")
  @ApiModelProperty("创建于联盟应用ID")
  private String appId;

  /**
   * 是否用于一级部门 TRUE:是 FALSE:否
   */
  @TableField(value = "is_use_first_dept")
  @ApiModelProperty("是否用于一级部门")
  private String isUseFirstDept;

  /**
   * 是否目标下发 TRUE:是 FALSE:否
   */
  @TableField(value = "is_first_objective")
  @ApiModelProperty("是否目标下发")
  private String isFirstObjective;

  /**
   * 填报设置是否完成 TRUE:是 FALSE:否
   */
  @TableField(value = "is_done_filleout_set")
  @ApiModelProperty("填报设置是否完成")
  private String isDoneFilleoutSet;

  /**
   * 与父级责任主体是否相同 TRUE:是 FALSE:否
   */
  @TableField(value = "and_parent_body_is_identical")
  @ApiModelProperty("与父级责任主体是否相同")
  private String andParentBodyIsIdentical;

  /**
   * 评价设置是否完成 TRUE:是 FALSE:否
   */
  @TableField(value = "is_done_evaluate_set")
  @ApiModelProperty("评价设置是否完成")
  private String isDoneEvaluateSet;
}
